'use strict';


	
app.directive('myPage',function(){
    return {
        restrice: 'EA',
        replace: true,
        controller: function($cookieStore,$scope,$rootScope){
        	$scope.page = {
				"pageSize":5,       // 每页多少条
				"pageNo":1,			// 当前页
				"totalPage":0,      // 总共多少页
				"totalSize":0,		// 总共多少条记录
				"pagesLength":7,    //每页的长度
				"perPageOptions": [5,10,20,30,40,50],
				"pageButtons":[]
			}
        	$cookieStore.put("page",$scope.page); //将page对象存放到cookie中，获取列表数据时需要使用该对象，可以从cookie中获取
        	$scope.$emit("page.query");	//通知上级controller 查询页面对象中的totalSize和查询当前页的具体列表数据(比如：用户列表)
        	
        	/**
        	 * 根据定义的page对象，计算出分页总数
        	 * @param {Object} page
        	 */
        	$scope.getTotalPage = function(page){
        		var totalPage = 0;
        		if(page.totalSize%page.pageSize>0){  //取余，比如7%3 会余1   如果有余，则页数应该是7除以3取整为2再加上1等于3
					totalPage = Math.floor(page.totalSize/page.pageSize) + 1;
				}else{//如果总条数为6条，每页3条，则6%3等于0，则页数应该是6除以3等于2
					totalPage = page.totalSize/page.pageSize
				}
				return totalPage;
        	}
        	
        	/**
        	 * 根据定义的page对象，得到分页按钮列表
        	 * @param {Object} page
        	 */
        	$scope.getPageButtons = function(page){
        		var pageButtons = [];
        		if(page.totalPage <= page.pagesLength){
					for(var i=1;i <= page.totalPage; i++){
						pageButtons.push(i);
					}
				}else{
					var offset = (page.pagesLength -1) / 2;
					if (page.pageNo <= offset) {
						//第一种情况：左边没有...
						for(i = 1; i <= offset +1; i++){
							pageButtons.push(i);
						}
						
						pageButtons.push('...');
						pageButtons.push(page.totalPage);
						
					} else if(page.pageNo > page.totalPage - offset){
						pageButtons.push(1);
						pageButtons.push('...');
						for( i = offset + 1; i >= 1; i--){
							pageButtons.push(page.totalPage - i);
						}
						pageButtons.push(page.totalPage);
						
					}else{
						//最后的一种情况，两边都有...
						pageButtons.push(1);
						pageButtons.push('...');
						
						for(i = Math.ceil(offset / 2) ; i >= 1; i--){
			                pageButtons.push(page.pageNo - i);
			            }
			            pageButtons.push(page.pageNo);
			            for(i = 1; i <= offset / 2; i++){
			                pageButtons.push(page.pageNo + i);
			            }
						
					}
				}
				return pageButtons;
        	}
        	
        	/**
        	 * 当上级controller获取到数据后，需要通知当前controller获取到totalSize，则执行以下代码
        	 * 返回的data中的data为总记录条数totalSize
        	 */
        	$scope.$on("page.query.count", function(event, data) {
        		console.log("data",data.data);
        		$scope.page.totalSize = data.data;
        		$scope.page.totalPage = $scope.getTotalPage($scope.page);
				$scope.page.pageButtons = $scope.getPageButtons($scope.page);
				
				$scope.preButtonClass = "";//上一页按钮的样式
				$scope.nextButtonClass = "";//下一页按钮的样式
				if($scope.page.pageNo==1){//如果当前页等于1，则不能按上一页的按钮
					$scope.preButtonClass = "disabled";
				}
				if($scope.page.pageNo==$scope.page.totalPage){//如果当前页等于总共的页数，则表示没有下一页按钮
					$scope.nextButtonClass = "disabled";
				}
        	});
        
            /*
             * 点击分页按钮，或者选择每页显示
             */
			$scope.clickPage = function(pageNo){
				if(pageNo<1 || pageNo>$scope.page.totalPage || pageNo=='...') return;
	        	$scope.page.pageNo = pageNo;
				$cookieStore.put("page",$scope.page);//将当前页设置到cookie中
	        	$scope.$emit("page.query");
			}
        },
        templateUrl: 'admin/tpl/blocks/page.html'
    } 
    
});
app.directive('myPages',function(){
    return {
        restrice: 'EA',
        replace: true,
        controller: function($cookieStore,$scope,$rootScope){
        	$scope.pages = {
				"pageSize":5,       // 每页多少条
				"pageNo":1,			// 当前页
				"totalPage":0,      // 总共多少页
				"totalSize":0,		// 总共多少条记录
				"pagesLength":7,    //每页的长度
				"perPageOptions": [5,10,20,30,40,50],
				"pageButtonss":[]
			}
        	$cookieStore.put("pages",$scope.pages); //将page对象存放到cookie中，获取列表数据时需要使用该对象，可以从cookie中获取
        	$scope.$emit("page.querys");	//通知上级controller 查询页面对象中的totalSize和查询当前页的具体列表数据(比如：用户列表)
        	
        	/**
        	 * 根据定义的page对象，计算出分页总数
        	 * @param {Object} page
        	 */
        	$scope.getTotalPage = function(pages){
        		var totalPage = 0;
        		if(pages.totalSize%pages.pageSize>0){  //取余，比如7%3 会余1   如果有余，则页数应该是7除以3取整为2再加上1等于3
					totalPage = Math.floor(pages.totalSize/pages.pageSize) + 1;
				}else{//如果总条数为6条，每页3条，则6%3等于0，则页数应该是6除以3等于2
					totalPage = pages.totalSize/pages.pageSize
				}
				return totalPage;
        	}
        	
        	/**
        	 * 根据定义的page对象，得到分页按钮列表
        	 * @param {Object} page
        	 */
        	$scope.getPageButtonss = function(pages){
        		var pageButtonss = [];
        		if(pages.totalPage <= pages.pagesLength){
					for(var i=1;i <= pages.totalPage; i++){
						pageButtonss.push(i);
					}
				}else{
					var offset = (pages.pagesLength -1) / 2;
					if (pages.pageNo <= offset) {
						//第一种情况：左边没有...
						for(i = 1; i <= offset +1; i++){
							pageButtonss.push(i);
						}
						
						pageButtonss.push('...');
						pageButtonss.push(pages.totalPage);
						
					} else if(pages.pageNo > pages.totalPage - offset){
						pageButtonss.push(1);
						pageButtonss.push('...');
						for( i = offset + 1; i >= 1; i--){
							pageButtonss.push(pages.totalPage - i);
						}
						pageButtonss.push(pages.totalPage);
						
					}else{
						//最后的一种情况，两边都有...
						pageButtonss.push(1);
						pageButtonss.push('...');
						
						for(i = Math.ceil(offset / 2) ; i >= 1; i--){
			                pageButtonss.push(pages.pageNo - i);
			            }
			            pageButtonss.push(pages.pageNo);
			            for(i = 1; i <= offset / 2; i++){
			                pageButtonss.push(pages.pageNo + i);
			            }
						
					}
				}
				return pageButtonss;
        	}
        	/**
        	 * 当上级controller获取到数据后，需要通知当前controller获取到totalSize，则执行以下代码
        	 * 返回的data中的data为总记录条数totalSize
        	 */
        	$scope.$on("page.query.counts", function(event, data) {
        		$scope.pages.totalSize = data.data;
        		$scope.pages.totalPage = $scope.getTotalPage($scope.pages);
				$scope.pages.pageButtonss = $scope.getPageButtonss($scope.pages);
				
				$scope.preButtonClass = "";//上一页按钮的样式
				$scope.nextButtonClass = "";//下一页按钮的样式
				if($scope.pages.pageNo==1){//如果当前页等于1，则不能按上一页的按钮
					$scope.preButtonClass = "disabled";
				}
				if($scope.pages.pageNo==$scope.pages.totalPage){//如果当前页等于总共的页数，则表示没有下一页按钮
					$scope.nextButtonClass = "disabled";
				}
				
        	});
        
            /*
             * 点击分页按钮，或者选择每页显示
             */
			$scope.clickPages = function(pageNo){
				if(pageNo<1 || pageNo>$scope.pages.totalPage || pageNo=='...') return;
	        	$scope.pages.pageNo = pageNo;
				$cookieStore.put("pages",$scope.pages);//将当前页设置到cookie中
	        	$scope.$emit("page.querys");
			}
        },
        templateUrl: 'admin/tpl/blocks/pages.html'
    } 
    
});